//
//  MLStatusListViewModel.swift
//  SinaWeibo
//
//  Created by 李亮亮 on 16/4/13.
//  Copyright © 2016年 Big Fish. All rights reserved.
//

import UIKit

class MLStatusListViewModel: NSObject {

    lazy var statusArray: [MLStatusViewModel] = [MLStatusViewModel]()
    
    func loadHomagePageData(isPullup: Bool, finished: (isSuccess: Bool) -> ()) {
        guard let token = MLUserAccountViewModel.sharedUserAccountViewModel.userAccount?.access_token else {
            print("用户未登录")
            return
        }
        
        
        //上拉加载更多数据 max_id
        //加载更多数据  执行上拉操作
        //不能够同时制定since_id 和 max_id  这两个字段互斥的 只能够传一个
        var max_id: Int64 = 0
        var since_id: Int64 = 0
        if isPullup {
            //上拉
            max_id = statusArray.last?.status?.id ?? 0
        } else {
            //下拉
            since_id = statusArray.first?.status?.id ?? 0
        }

        
        MLNetworkTools.sharedTools.loadHomePageData(token,max_id: max_id,since_id: since_id) { (result, error) -> () in
            if error != nil {
                print(error)
                finished(isSuccess: false)
                return
            }
            // 网络请求成功
//            print(result)
            // 1.将result转换为字典类型
            guard let dict = result as? [String : AnyObject] else {
                finished(isSuccess: true)
                return
            }
            // 2.根据statuse key 获取对应的字典类型的数组
            guard let array = dict["statuses"] as? [[String : AnyObject]] else {
                finished(isSuccess: false)
                return
            }
            // 3.遍历数组
            // 声明一个可变数组
            var tempArray = [MLStatusViewModel]()
            for item in array {
                // 4.字典转模型
                let s = MLStatus(dict: item)
                let viewModel = MLStatusViewModel(status:s)
                // 5. 将模型添加到数组中
                // 可以达到一个 cell 对应一个viewModel
                tempArray.append(viewModel)
            }
            // 保存数组
//            self.statusArray = tempArray
            if isPullup {
                // 上拉加载更多
                self.statusArray = self.statusArray + tempArray
            } else {
                // 下拉刷新
                self.statusArray = tempArray + self.statusArray
            }
            
            // 6.刷新tableView
            finished(isSuccess: true)
        }
    }
}
